上回我們使用了mssql-scripter成功在我們指定的檔案路徑上產生.sql腳本,但是比較了先前產生的.sql腳本後會發現,使用mssql-scripter自動產生的.sql腳本多了不少的內容,雖然執行後產生的結果在某些情境下可能一樣,但是實際上這是兩個不同的腳本,今天我們來嘗試讓自動產生的腳本符合預期。
先前我們在產生指令碼時,對於選擇物件階段我們是直接從資料表做選擇,而非整個資料庫,所以在mssql-scripter的選項中,我們應該要指定的目標是資料庫中的全資料表結構以及內容,而非整個資料庫,語法如下:
--include-objects {object1 object2 ...}
--include-objects FirstTable SecondTable
接著在設定指令碼編寫選項階段的進階選項中,我們將編寫USE DATABASE的指令碼設為false,所以在mssql-scripter的選項中,我們應該要排除USE DATABASE,語法如下:
--exclude-use-database
最後一我們的需求將我們的各項目組合起來,語法如下:
mssql-scripter -S . -d FirstDataBase --schema-and-data --include-objects FirstTable SecondTable --exclude-use-database --display-progress -f C:\temp\FirstDataBase_scripter.sql
執行成功並順利產出.sql腳本後,即能比對先前使用SSMS產生指令碼功能所產出的.sql腳本內容,不過在整個流程上似乎還有一些內容我們可以做調整,後續我們繼續慢慢來優化整個流程。
更多小知識,我們下次見~~